// -> client to server
// <- server to client
// <-> client & server
//心跳      
struct HeartbeatReq ->
{
	
}
//心跳返回
struct HeartbeatRsp <-
{
	
};
//验证码
struct VerificationCodeReq ->
{
	string phone;
};
//验证码返回
struct VerificationCodeRsp <-
{
	int8 isOK; //0 成功  1失败 2验证码获取错误
};

//版本号限制
struct VersionNumberReq ->
{
	String version;
};
//版本号限制
struct VersionNumberRsp <-
{
	int isok;//0不允许登陆   1 允许登陆
	string share;
};

//账号登录 
struct ZhanghaoLoginReq ->
{
	string account;
	string mima;
	string version;//版本号
	string longitude;//经度
	string latitude;// 纬度
	string equipmentNumber;//设备号
};
//游客注册
struct VisitorLoginReq ->
{
	string deviceID;
	string pwd;
	string version;
	string equipmentNumber;//设备号
}

//手机号注册
struct PhoneRegisterReq ->
{
	string acc;
	string pass;
	string yzm;
}

struct PhoneRegisterRsp <-
{
	string acc;
	string pass;
	int isok;//0成功 1失败 2 验证码已过期 3 手机号已被注册 4手机号错误
}

//重置密码
struct resetPasswordReq ->
{
	string acc;
	string pass;
	string yzm;
}

struct resetPasswordRsp <-
{
	string acc;
	string pass;
	int isok;//0成功 1失败 2 验证码已过期
}

//微信登录
struct WeiChatReqLoginReq ->
{
	string  unionid; //登录标识 
	string  nickname;
	string  head;
	int8 sex; //性别 0 女  1男
	int8  type //1 QQ  2 微信 
	string version;
	string longitude;//经度
	string latitude;// 纬度
	string ip;//ip网络
	string equipmentNumber;//设备号
}
//登录返回 
struct LoginRsp <-
{
	int8 isOK; //0 成功  1 验证码错误  2 重复登录   3 用户密码错误 4 微信登录错误 5没有GPS 7 断线重连  8 断线重连  有房间  9 用户禁用 10没有注册  11禁止登录 维护中
	string unionid;
	string password;
	string name;
	int uid;
	string head;
}
//退出登录
struct Logout ->
{
}
//获取用户信息
struct getuserinfo ->
{
	
}
//用户信息
struct UserInfo <-
{
	int id;  
	string nickName;
	string head;
	int gold;
	int8 sex;
	int diamonds;//金豆
	string autograph;//个性签名
	int integral;//积分
	int nameupdate;//免费修改昵称的次数
	int updateNameIntegral;//修改昵称需要消耗的积分数量
	string downloadurl;//下载地址
	string kefuwx;//客服微信号
	string serviceFeeProportion;//服务费比例
}
//修改用户信息
struct UpdateuserReq ->
{
	int8 sex;
	string autograph;
	string head;
	string nickname;
};
struct UpdateuserRsp <-
{
	int8 sex;
	string autograph;
	string head;
	string nickname;
	int isok;//0成功 1积分不足 2保存失败 3昵称重复
};
//准备
struct ReadyReq ->
{
	
}
struct ReadyRsp <-
{
	int8 isOK;//0成功 1 已经准备
}

//广播玩家准备
struct ReadyNotice <-
{
	int uid;
}

//离开
struct leaveReq ->
{
	
}
//离开房间
struct LeaveRsp  <-
{
	int8 isOK ; //0成功 1游戏中不能离开房
}

//其他离开房间
struct OtherLeaveRoom<-
{
	int uid; //用户ID 
}


//房主开始游戏
struct BankerGameStartReq ->
{

}
struct BankerGameStartRsp <-
{
	int isok;//
}

//创建房间dd
struct CreateRoomReq ->
{
	int type;//0俱乐部房间 1好友房
	int difen;//底分
	string roomname;//房间名字
	int dairumin;//最小带入分数
	int shengmangbeishu;//升芒最大倍数
	int autoStartGameCount;//自动开始牌局人数 0不开启，牌局只能由房主点开始才能开
	int canDairuTime;//禁止新玩家带入 牌局剩余时间单位分钟，0无限制
	int xiumangorzoumang;//休芒/揍芒 0 关  1开
	int kaiqimangquan;//开启圈芒 0 关  1开
	int GPSorIP;//GPS/IP位置检测 0 关  1开
	int dijiuwang;//2/9地九王 0 关  1开
	int fanghuopai;//防伙牌 0 关  1开
	int gameallTime;//游戏总时长 分钟
	int gameallCount;//游戏玩家总人数
	int clubid;//俱乐部id
	int controlBringIn;//控制带入
};

//创建房间
struct CreateRoomRsp <-
{
	int8 isOK; //0 成功 1 已有房间 2积分不足
	int type;//0俱乐部房间 1好友房  
};

//进入房间
struct EnterRoomReq ->
{
	int roomNo;//房间号
	int clubid;// 俱乐部ID 在外部进入房间时发送
};

//进入房间返回
struct EnterRoomRsp <-
{
	int8 isOK; //0 成功  1已在房间 2金币不足 3房间已满 4房间号不存在 5 已经被踢过
};

//其他人进入房间
struct OtherEnterRsp <-
{
	PlayerInfo player;
};

//房间信息
struct RoomInfoRsp <-
{
	int gamechang;//   0 大厅房间，大于0 为俱乐部ID
	int difen;	//底分
	int roomNo; //房间号
	string roomname;//房间名字
	int8  status;   //1等待中 2 准备 3 发牌 4压注 5组牌 6结算 7搓牌
	int xiumangorzoumang;//休芒/揍芒 0 关  1开
	int kaiqimangquan;//开启圈芒 0 关  1开
	int GPSorIP;//GPS/IP位置检测 0 关  1开
	int dijiuwang;//2/9地九王 0 关  1开
	int fanghuopai;//防伙牌 0 关  1开
	int gameallTime;//游戏总时长 分钟
	int gameallCount;//游戏玩家总人数
	vector<PlayerInfo> players;
	int gameSurplusTime;//剩余时间 秒
	int homeownerUid;//房主
	int shengmangbeishu;//升芒最大倍数
	int pichi;//皮池
	int mangguochi;//芒果池
	int dairumin;//带入最小
	int operateMaxScore;//操作最大分
	int operateUid;//操作人
	int isxiu;//
	int operateSurplusTime;//操作剩余时间
	int tableNoStartCloseTime;//桌子未开始 剩余倒计时
	int gameCurrNumber;//当前局数
	int zhuangUid;
	int xiupaiMoney;//秀牌
	int startMinScore;//最低开始分
	int controlBringIn;//控制带入
	int bankerPower;//房主权限
	int forbidChat;//禁止聊天
	int freeSeat;//免费留座次数
	
};

//玩家信息 
struct PlayerInfo 
{
	int id;
	int seatNo; //座位编号
	string nickname;
	string head;
	int integral;//积分
	int clubIntegral;//玩家在俱乐部的信誉积分
	int clubRank;//玩家在俱乐部的身份
	int clubid;//玩家的俱乐部ID
	int ready;// 0 未准备  1 准备
	int bobo;//设置有钵钵
	vector<PaperCardStructrue> handCards;//手牌
	int liuzuoTime;//留座时间 秒
	int betScore;//压分
	int operationType;// 0 1 2 3 4 5  丢 休 敲 大 拖 跟
	vector<PaperCardStructrue> zuCards;
	int setBoboTime;//设置钵钵倒计时
	int cuopaiStatus;// 1开了搓牌
	int cuopaiType;// 1搓过牌
	vector<int> brightCardsIndex;//亮牌下标
	int round;//操作的回合
	string longitude;//经度
	string latitude;//纬度
};
//观战玩家信息
struct WatchWarPlayerInfoStructrue
{
	int uid;
	string name;
	string head;
	int seatNo;	
}
//获取观战玩家信息
struct GetWatchWarPlayerInfoReq ->
{

}
struct GetWatchWarPlayerInfoRsp <-
{
	vector<WatchWarPlayerInfoStructrue> wwpis;
}

//获取桌子信息
struct GetTableinfoReq ->
{
}
struct GetTableinfoRsp <-
{
	int isok;// 0成功 1桌子不存在
}
//设置钵钵
struct SetupboboReq ->
{
	int bobo;	
};
//设置钵钵
struct SetupboboRsp <-
{
	int8 isOk;//0 成功 1积分不足 2俱乐部信誉积分不足3联盟信誉额度不足
	int bobo;
};
//广播设置钵钵
struct BroadcastSetupbobo <-
{
	int bobo;
	int uid;
};
//游戏开始
struct GameStartRsp <-
{
	vector<GameStartStructrue> gss;
	int zhuangUid;
}
struct GameStartStructrue
{
	int uid;
	int mangguo;
}
struct GameEndRsp <-
{
	
}
//发牌结构
struct LicensingStructure 
{
	int fabrandid;//发牌玩家id
	vector<PaperCardStructrue> cards;	
};
struct PaperCardStructrue
{
	int id;
	int num;
	int type;
}
//发牌
struct LicensingRsp <-
{
	vector<LicensingStructure> cards;	
	int lun;//轮数
};

//广播玩家可以操作
struct BroadcastCanOperationRsp <-
{
	int uid;
	
};
//玩家操作
struct OperationReq ->
{
	int operation;//  0丢（丢牌需确认）、 1休、2敲（敲的时候也需确认）、 3大（选择分数以筹码的方式来增加）、 4拖、 5跟
	int chip;//下注筹码

};
struct OperationRsp <-
{
	int8 isOk;//0 成功 1不在压注状态 2 没有操作类型 3不到自己操作 4已操作
};
//广播操作
struct BroadcastOperationRsp <-
{
	int uid;
	int operation;//  0 丢（丢牌需确认）、 1休、 2敲（敲的时候也需确认）、 3大（选择分数以筹码的方式来增加）、 4拖、 5跟
	int chip;//下注筹码
	
};
//组牌
struct ZuPaiReq ->
{
	vector<int> cards;
};
//组牌
struct ZuPaiRsp <-
{
	int8 isOk;//0 成功	
	vector<int> zucards;	//只发送自己的牌 组好的牌
};
//组牌
struct BroadcastZuPaiRsp <-
{
	int id;
};
//结算
struct SettlementStructrue
{
	int uid;
	int win;
	int refundBobo;//需要退回的压注钵钵
	int winmangguo;
	vector<PaperCardStructrue> pcs;//牌
}
struct SettlementRsp <-
{
	vector<SettlementStructrue> ss;
	int startMinScore;//最低开始分
}

//入座
struct RuzuoReq ->
{
	int type;//0坐下 1站起来 2留座 3 回座
	int seatNo;
};
struct RuzuoRsp <-
{
	int isok;//0成功  1 已满 2不在观战 3游戏中不留座 4 数据错误
};
struct BroadCastRuzuoRsp <-
{
	int uid;
	int type;//0坐下 1站起来 2留座 3 回座
	int seatNo;
};

//增加操作时间 单位S
struct AddOptionTimeReq ->
{
	int time;
};
struct AddOptionTimeRsp <-
{
	int isok;//0成功 1失败
};
struct BroadcastAddOptionTimeRsp <-
{
	int id;
	int time;
};

//实时战绩
struct RealTimeRecordReq ->
{
	
}
struct RealTimeRecordRsp <-
{
	vector<RealTimeRecordStructrue> rtrs;
	int type;//0 开始  2结束
}
struct RealTimeRecordStructrue
{
	string name;
	int totalBobo;//总计带入
	int totalWin;//总计输赢
	int uid;
}
//牌局回顾
struct GameReviewReq ->
{
	int page;
	int xiupai;// 1秀
}
struct GameReviewRsp <-
{
	vector<GameReviewStructrue> grs;
	int totalPage;//总页数
	int page;//请求页数
	int xiupai;// 1秀
	int isok;// 1钱不够
}
struct GameReviewStructrue
{
	string name;
	string head;
	int operate;
	vector<PaperCardStructrue> cards;//牌
	vector<int> frontCardids;//手牌顺序id
	int winMangguo;
	int win;
	int bet;
	int zhuangStatus;//0 不是 
	int uid;
	int sanhua;// 
	
}
//亮牌
struct BrightCardReq ->
{
	int type;//0取消亮牌 1选择亮牌
	int index;//第几张牌
}
//广播亮牌
struct BrightCardRsp <-
{
	int uid;
	int type;//0取消亮牌 1选择亮牌
	int index;//第几张牌
}
//总结算
struct SummaryCalculationRsp <-
{
	vector<RealTimeRecordStructrue> rtrs;
	int joinHandNumber;//参与手数
	int totalHandNumber;//总手数
	int integral;//积分
	string clubName;//俱乐部名字
}
//控制带入
struct ControlBringInReq ->
{
	int id;
	int type;//0拒绝 1同意
}
struct ControlBringInRsp <-
{
 	int isok;//0成功 1不存在
 	int id;
}
struct ControlBringInStruct
{	
	int id;//数据id
 	string name;
 	string head;
 	int uid;
 	int integral;//积分
}
//请求控制带入数据
struct GetControlBringInDataReq ->
{

}
struct GetControlBringInDataRsp <-
{
	vector<ControlBringInStruct> cbi;
}
//俱乐部--------------------------------------------------------

//创建俱乐部
struct XYclubcreateReq->
{
	string headurl;//头像地址
	string clubname;//俱乐部名字
	string content;//简介
};
struct XYclubcreateRsp <-
{
	int isok;//0 成功  1.积分不足 2.名字格式不对 3俱乐部已达上限 4俱乐部添加失败
	int clubid;
};

//俱乐部搜索
struct XYclubserchReq ->
{
	int id;//俱乐部ID 俱乐部合伙人ID
};

struct XYclubserchRsp <-
{
	int isok;//0成功 1.没找到 2已在该俱乐部
	XYclubinfoStruct clubinfo;
	int type;//搜索到的类型 1 通过俱乐部ID搜索到  2 通过俱乐部合伙人搜索到
	int searchid;//搜索的ID
};

//加入俱乐部
struct XYclubjoinReq ->
{
	int id;//俱乐部ID
	int type;//搜索到的类型 1 通过俱乐部ID搜索到  2 通过俱乐部合伙人搜索到
	int searchid;//搜索的ID
};

struct XYclubjoinRsp <-
{
	int isok;//0 成功 1.已申请俱乐部 2.已加入俱乐部 3.申请失败俱乐部不存在
};

//进入俱乐部
struct XYfindClubInfoReq ->
{
    int clubid;//进入的俱乐部ID
};
struct XYfindClubInfoRsp <-
{
	XYclubinfoStruct clubinfo;//俱乐部信息
	XYclubplayerStruct clubplayer;//自己在俱乐部的信息
};

//离开俱乐部（非退出）
struct XYleaveClubReq ->
{
};

//我的俱乐部列表
struct XYmClubListReq ->
{

};
struct XYmClubListRsp <-
{
	vector<XYclubinfoStruct> clubinfos;
};
//俱乐部修改
struct XYmClubupdateReq ->
{
    int id;//俱乐部ID
	int type;//0 头像、名字、简介 1.信誉系统开关
	string name;
	string headurl;
	string content;//简介
	int xingyu;//0信誉关 1信誉开
};

struct XYmClubupdateRsp <-
{
    int isok;//0 修改成功 1修改失败 信息填写错误 2修改失败积分不足
    int id;//俱乐部ID
	int type;//0 头像、名字、简介 1.信誉系统开关
	string name;
	string headurl;
	string content;//简介
	int xingyu;//0信誉关 1信誉开
};

//俱乐部成员列表
struct XYmClubplayersReq ->
{
	int page;//页数
	string searchVal;//搜索内容
	int clubid;
};
struct XYmClubplayersRsp <-
{
	int page;//页数
	int allpage;//页数
	int onlineCount;//在线人数
	int allPlayercount;//总人数
	string playerallxinyu;//成员总额度
	int hasxinyuvaluecount;//有信誉额度的人数
	vector<XYclubplayerStruct> players;
};
//成为合伙人
struct XYbecomeAPartnerReq ->
{
	int cid;//俱乐部ID
	int type;//1 申请成为合伙人 2关闭推广系统 3开启推广系统
};

struct XYbecomeAPartnerRsp <-
{
	int isok;//0成功 1失败 2已申请等待审核
	int type;//1 申请成为合伙人 2关闭推广系统 3开启推广系统
};

//俱乐部成员设置
struct XYmClubSetplayerReq ->
{
    int cid;//俱乐部ID
	int type;//1.设置管理员 2.取消管理员 3.移除成员 4.修改信誉额度
	int playerid;
	int value;
};

struct XYmClubSetplayerRsp <-
{
	int isok;//0成功 1失败
	int cid;//俱乐部ID
	int type;//1.设置管理员 2.取消管理员 3.移除成员 4.修改信誉额度
	int playerid;
	int value;
};

//桌子列表
struct XYhalltableListReq ->
{
    int page;//页数
	int type;//0朋友间的乐趣 1所有俱乐部桌子 2.我的俱乐部桌子
	int cid;//俱乐部ID type == 3时
};

struct XYhalltableListRsp <-
{
    int page;//页数
    int allpage;//总页数
    int allCount;//总房间数
	int type;//0 朋友间的乐趣 1俱乐部桌子 2.我的俱乐部桌子
	vector<XYhalltableinfoStruct> tableinfos;
};

//查询消息
struct XYfindInformationReq ->
{
	int type;//0 我的所有邮件  1俱乐部邮件
	int id;//type = 0时  发0,type=1时 发俱乐部ID
};
struct XYfindInformationRsp <-
{
	vector<XYnotificationStruct> notifications;
	int type;//0 我的所有邮件  1俱乐部邮件
	int isend;//数据是否全部发送  1 否 0已发送完
};

//邮件操作
struct XYmailOperationReq ->
{
	int type;//操作类型 1 同意申请俱乐部 2拒绝申请俱乐部 3同意成为合伙人 4拒绝成为合伙人 5同意加入联盟 6拒绝加入联盟
	int mid;//邮件ID
};
struct XYmailOperationRsp <-
{
	int type;//操作类型 1 同意申请俱乐部 2拒绝申请俱乐部 3同意成为合伙人 4拒绝成为合伙人
    int mid;//邮件ID
    int isok;// 0操作失败 1操作成功 2已处理
};

//通知申请合伙人成功
struct XYNotifyPartnersokRsp <-
{
	int isPartner;//是否为合伙人0 不是 1是
    int partnerId;//合伙人的专属ID 只有合伙人显示
};

//获取推广信息
struct XYfindPromotionInfoReq ->
{
	int clubid;//俱乐部ID
};
struct XYfindPromotionInfoRsp <-
{
	string downloadLink;//下载地址
	string downPictureAddress;//下载二维码链接
	int isPartner;//是否为合伙人0 不是 1是
	int partnerId;//合伙人的专属ID 只有合伙人显示
}

//查询俱乐部合伙人
struct XYfindClubPartnerReq ->
{
	int page;//页数
	int clubid;
};

struct XYfindClubPartnerRsp <-
{
	int page;//页数
	int allpage;//页数
	int allPlayercount;//总人数
	int totalBonusBalance;//红利总余额
	string totalBonusAccumulation;//红利总累计
	vector<XYclubPartnerStruct> partners;
};

//查询下级成员
struct XYfindJuniorPlayerReq ->
{
	int page;//页数
	int clubid;//俱乐部ID
	int uid;//用户ID
};
struct XYfindJuniorPlayerRsp <-
{
	int page;//页数
	int allpage;//页数
	int allPlayercount;//总邀请人数
	int totalBonusBalance;//当前剩余红利
	string totalBonusAccumulation;//累计红利
	int bonusShare;//红利比例
	vector<XYclubJuniorMemberStruct> juniorPlayers;//下级玩家列表
};

//修改红利分配比例
struct XYclubPlayerUpdateBonusShareReq ->
{
	int clubid;//俱乐部ID
	int uid;//用户ID
	int proportion;//要修改的红利比例
};
struct XYclubPlayerUpdateBonusShareRsp <-
{
	int isok;//0 成功  1失败
	int proportion;//要修改的红利比例
};

//合伙人 红利操作 减少合伙人红利
struct XYclubPartnerCuttingReq ->
{
	int clubid;//俱乐部ID
	int uid;//用户ID 合伙人的用户ID
	int value;//要减少的数值
};
struct XYclubPartnerCuttingRsp <-
{
	int isok;//0 成功  1失败  2红利不足
	int value;//要减少的数值
};


//红利操作明细
struct XYfindDividendOperationReq ->
{
	int page;//页数
	int clubid;//俱乐部ID
	int uid;//合伙人用户ID
};
struct XYfindDividendOperationRsp <-
{
	int page;//页数
	int allpage;//总页数
	int allcount;//总条数
	vector<XYclubPremiumOplogStruct> premiumOplogs;
};

//下级玩家贡献
struct XYfindPlayersContributionReq ->
{
	int page;//页数
	int clubid;//俱乐部ID
	int pid;//合伙人的用户ID
	int uid;//用户ID  查询的玩家ID
};
struct XYfindPlayersContributionRsp <-
{
	int page;//页数
	int allpage;//总页数
	int allcount;//总条数
	int uid;//查询的玩家ID
	string name;//查询的玩家昵称
    string headurl;//查询的玩家头像
    string allContribution;//贡献额度
	vector<XYclubContributionLogStruct> contributionLogs;
};

//俱乐部基金充值、发放操作
struct XYtopUpIntegralReq ->
{
	int clubid;//俱乐部ID
	int type;//1充值基金  2发放基金
	int uid;//type == 2时使用
	int value;//充值的数量
};

struct XYtopUpIntegralRsp <-
{
	int isok;//0 成功  1失败
	int type;//1充值基金  2发放基金
    int uid;//type == 2时使用
	int value;//充值的数量
};

//俱乐部基金明细
struct XYfindClubTheFundSubsidiaryReq ->
{
	int page;//页数
	int clubid;//俱乐部ID
	int type;//0 查询所有 1 充值 2 发放
};
struct XYfindClubTheFundSubsidiaryRsp <-
{
	int page;//页数
	int allpage;//总页数
	int allcount;//总条数
	int type;//0 查询所有 1 充值 2 发放
    string allFoundation;//总计基金
	vector<XYclubJiJinLogStruct> clubjijinlogs;
};

//成员额度增加 减少
struct XYclubContributionUpdateReq ->
{
	int clubid;//俱乐部ID
	int type;//1增加  2减少
	int uid;//俱乐部成员的用户ID
	int value;//增加 或 减少的数量
};

struct XYclubContributionUpdateRsp <-
{
	int isok; //0 成功  1失败
	int type; //1增加  2减少
    int uid; //俱乐部成员的用户ID
	int value; //增加 或 减少的数量
};

//成员信用额度记录
struct XYfindPlayerXinYulogReq ->
{
	int page;//页数
	int clubid;//俱乐部ID
	int uid;//用户ID  查询的玩家ID
	int type;//-1成员查全部 0管理员查全部 1增加、2减少、3带入、4结算、5贡献
};
struct XYfindPlayerXinYulogRsp <-
{
	int page;//页数
	int allpage;//总页数
	int allcount;//总条数
	int uid;//查询的玩家ID
	int type;//1增加、2减少、3带入、4结算、5贡献
	string name;//查询的玩家昵称
    string headurl;//查询的玩家头像
    int playerallxinyu;//可以用信誉额度
	vector<XYclubPlayerxinyuLogStruct> clubPlayerxinyuLogs;
};

//离开俱乐部(从俱乐部退出)
struct XYLeaveTheClubReq ->
{
    int clubid;//俱乐部ID
};
struct XYLeaveTheClubRsp <-
{
    int isok;// 0操作成功 1操作失败
    int clubid;//俱乐部ID
};


//解散俱乐部
struct XYDissolveClubReq ->
{
    int clubid;//俱乐部ID
};
struct XYDissolveClubRsp <-
{
    int isok;// 0操作成功 1操作失败 2 请先退出联盟 3尚有牌局未结束 4请先将俱乐部玩家移除
    int clubid;//俱乐部ID
};

//俱乐部成员
struct XYclubplayerStruct
{
	int id;//成员id
	string name;
	string headurl;
	string content;//签名
	int sex;//性别 0 女  1男
	int isManager;//1创建者 2.管理员 3.普通成员
	int xingyuvalue;//信誉额度
	int gongxianbili;//贡献比例
	int isAccessory; //是否为合伙人0 不是 1是
    int loginouttime;//退出时间  -1在线
};

//俱乐部合伙人信息
struct XYclubPartnerStruct
{
	int uid;//用户ID
	string name;//用户昵称
	string headurl;//用户头像
	int partnerId;//专属id
	int balance_bonus;//剩余红利
};
//下级成员信息
struct XYclubJuniorMemberStruct
{
	int uid;//用户ID
	string name;//用户昵称
	string headurl;//用户头像
	int dayContribute;//今日贡献
	int dayShoushu;//手数
	string sumContribute;//累计贡献
};

//俱乐部合伙人的红利操作 结构
struct XYclubPremiumOplogStruct
{
	int val;//红利变动的值
	int pid;//操作员ID
	string name;//操作员昵称
	string optime;//操作时间 时间戳
	int residueVal;//操作后剩余红利
};

//下级玩家贡献 结构
struct XYclubContributionLogStruct
{
	int relevanceId;//当前记录关联ID 如房间号
	int integral;//积分
	int proportion;//比例
	string optime;//操作时间 时间戳
	int val;//贡献值
};

//俱乐部基金结构
struct XYclubJiJinLogStruct
{
    int type;//1 充值基金 2发放基金
	int pid;//发放基金的管理员用户ID
	string pname;//发放基金的管理员用户昵称
	string phead;//发放基金的管理员用户头像
	int uid;//接收基金的用户ID type==1时此处为空
    string uname;//接收基金的用户昵称 type==1时此处为空
    string uhead;//接收基金的用户头像 type==1时此处为空
	int integral;//基金数量
	int residualFunds;//操作完成后俱乐部基金剩余
	string optime;//操作时间 时间戳
};

//俱乐部成员信誉额度变化记录
struct XYclubPlayerxinyuLogStruct
{
    int type;//1增加、2减少、3带入、4结算、5贡献
	int quota;//数量
	int meId;//相关ID
	string optime;//操作时间 时间戳
	int residue;//剩余额度
	string tableonly;//房间唯一 type = 3,4，5时使用
};

//俱乐部信息结构
struct XYclubinfoStruct
{
	int id;//俱乐部ID
	string name;
	string headurl;
	string content;//俱乐部简介
	int onlinecount;//俱乐部在线人数
	int allPeopleCount;//俱乐部总人数
	int paijuCount;//正在进行的牌局数量
	string createdate;//创建日期
	int creatorid;//创建者ID
	string creatorname;//创建者名字
	string creatorhead;//创建者头像
	int clubjijin;//俱乐部基金
	int xingyu;//0关 1开   信誉开关
	string xingyuvalue;//信誉授权值
	int unionid;//联盟id
	int unionCreatorCid;//创建联盟的俱乐部ID
	int promotionType;//推广开关 0 开 1关
	string unionName;//联盟名称
	int unionedu;//联盟额度 联盟使用
	int hasxinyuvaluecount;//有信誉额度的人数  联盟使用
	int gamenumber;//牌局数量
	int visitRank;//访问者身份
};

//俱乐部 end--------------------------------------------------------

//联盟--------------------------------------------------------

//创建联盟
struct XYunionCreateReq->
{
	string head;//联盟头像  如果没有默认发0
	string unionName;//联盟名字
	int clubid;//俱乐部ID
};
struct XYunionCreateRsp <-
{
	int isok;//0 成功  1.失败
	string msg;//提示文字
	int unionid;//联盟ID 成功后返回
	string unionname;//联盟名称 成功后返回
};


//联盟搜索
struct XYunionSerchReq ->
{
	int clubid;//俱乐部ID
	int unionid;//搜索的联盟ID
};
struct XYunionSerchRsp <-
{
	int isok;//0成功 1.没找到 2已有俱乐部
	int unionid;//搜索的ID
	XYunioninfoStruct unioninfo;
};

//申请加入联盟
struct XYapplyJoinUnionReq ->
{
	int clubid;//俱乐部ID
	int unionid;//要加入的联盟ID
};
struct XYapplyJoinUnionRsp <-
{
	int isok;//0成功 1.失败 2已申请
};

//我的联盟
struct XYmyUnionReq ->
{
	int clubid;//俱乐部ID
	int unionid;//联盟ID
};
struct XYmyUnionRsp <-
{
	XYunioninfoStruct unioninfo;//联盟详情
    vector<XYclubinfoStruct> clubinfos;//联盟下的俱乐部  除了创建者 其它联盟都只能看到自己的俱乐部
};

//联盟 的俱乐部额度变动
struct XYupdateUnionClubQuotaReq ->
{
	int clubid;//俱乐部ID
	int unionid;//联盟ID
	int type;//1增加额度 2减少额度
	int val;//额度变动数量
};
struct XYupdateUnionClubQuotaRsp <-
{
	int isok;//0成功 1.失败
	int clubid;//俱乐部ID
    int unionid;//联盟ID
    int type;//1增加额度 2减少额度
    int val;//额度变动数量
};


//联盟 俱乐部额度变动记录
struct XYfindUnionClubeduLogReq ->
{
	int page;//页数
	int unionid;//联盟ID
	int clubid;//俱乐部ID
	int type;//0全部 1增加、2减少、3带入、4结算、5贡献
};

struct XYfindUnionClubeduLogRsp <-
{
	int page;//页数
	int allpage;//总页数
	int allcount;//总条数
	int unionid;//联盟ID
    int clubid;//俱乐部ID
	int type;//0全部 1增加、2减少、3带入、4结算、5贡献
	string name;//俱乐部名称
    string head;//俱乐部头像
    int unionedu;//剩余可用额度
    int allPlayerCount;//俱乐部总人数
    int quotaPlayerCount;//额度人数
	vector<XYunionClubeduLogStruct> unionClubeduLogs;
};

//离开联盟
struct XYLeaveUnionReq ->
{
	int clubid;//俱乐部ID
};
struct XYLeaveUnionRsp <-
{
	int isok;//0成功 1.失败
};


//解散联盟
struct XYDissolveUnionReq ->
{
	int clubid;//俱乐部ID
};
struct XYDissolveUnionRsp <-
{
	int isok;//0成功 1.失败 2尚有牌局未结束
};


//通知数据改变
struct XYInformDataAlterRsp <-
{
	int type;//1俱乐部已退出联盟 2联盟已解散 3俱乐部已解散 4成员退出俱乐部 5玩家被移除俱乐部 6我的消息红点  7俱乐部消息红点
	int operateclubid;//操作的俱乐部ID
	int clubid;//相关的俱乐部ID
	int unionid;//相关的联盟ID
};


//联盟俱乐部额度变动记录 结构
struct XYunionClubeduLogStruct
{
	int type;//1增加、2减少、3带入、4结算、5贡献
    int quota;//数量
    int meId;//相关ID
    string optime;//操作时间 时间戳
    int residue;//剩余额度
    string roomkey;//3 4 5 需要的房间唯一key
};

//联盟信息结构
struct XYunioninfoStruct
{
	int id;//联盟ID
	string name;
	string head;
	int allPeopleCount;//联盟总人数
	int memberRatio;//成员比例
	int creatorId;//创建者的俱乐部ID
	string creatorName;//创建者的俱乐部昵称
};

//联盟  end--------------------------------------------------------

//大厅牌局桌子结构信息
struct XYhalltableinfoStruct
{
	int type;//0 俱乐部房间 1.玩家创建房间 2联盟房间
	int roomid;
	string name;//桌子名称
	int cid;//房主ID
	string clubName;//如果是俱乐部创建的房间 就是俱乐部名字 否则就为空字符串
	int clubid;//如果是俱乐部ID
	int myclublv;//我在这个俱乐部的身份
	int unionid;//联盟ID
	string head;
	int pi;//低分、皮池
	int maxPlayerCount;//最大人数上线
	int nowPlayerCount;//当前人数
	int gamestate;//0 准备中 1已开始
	int gamealltime;//游戏总时长
	int gamevaluetime;//剩余游戏时长
	int dijiuwang;//0不是地九王 1是地九王
	int isDairu;//0未带入 1已带入
	string createtime;//牌局创建时间 （时间戳）

};

//邮件通知
struct XYnotificationStruct
{
	int id;//邮件ID
	int cid;//俱乐部ID  或联盟ID
	int uid;//用户ID
	int notificationType;//通知类型 1俱乐部通知  2联盟通知 3个人通知
	int msgType;//msg 类型：1申请加入俱乐部 2申请成为合伙人 3申请加入联盟
	string msg;//msg 通知说明
	string head;//头像
	string name;//名称
	int state;//通知状态 0 待处理 1同意 2拒绝
};


//游戏记录 ----------------------------------------------------
//查询历史牌局
struct XYfindGameAllLogReq ->
{
    int type;//1 我参与的牌局 2我创建的牌局 3俱乐部历史牌局
	int page;//页数
	int clubid;//俱乐部ID  type==3时使用
};

struct XYfindGameAllLogRsp <-
{
	int page;//页数
	int allpage;//总页数
	int allcount;//总条数
	int clubid;//俱乐部ID
	int type;//1 我参与的牌局 2我创建的牌局 3俱乐部历史牌局
	vector<XYgameAlllogStruct> ameAlllogs;
};

//查询牌局记录 详细记录
struct XYfindGameMinLogReq ->
{
    int type;//1 普通查询 （俱乐部、首页的牌局回看） 2联盟 贡献结算时点击查看 3俱乐部贡献结算点开查询
	int tableid;//桌子号
	string tableonly;//桌子唯一
	int clubid;//俱乐部ID type=2时使用
	int unionid;//联盟ID type=2时使用
};

struct XYfindGameMinLogRsp <-
{
    int type;//1 普通查询 （俱乐部、首页的牌局回看） 2联盟 贡献结算时点击查看
    int tableid;//桌子号
    string cname;//创建者名称
    string tableName;//房间名称
    int gameDuration;//游戏时长
    int shoushu;//总手数
    int zongdairu;//总带入

    int clubdairu;//俱乐部总带入  type=2时使用
    int clubjifen;//俱乐部所产生的总积分 type=2时使用
    int clubfenpei;//俱乐部总分配 type=2时使用
	vector<XYgameMinlogStruct> gameminlogs;
};

//游戏记录 end ----------------------------------------------------

//历史牌局记录 结构
struct XYgameAlllogStruct
{
	int tableid;//桌子ID
	string tableonly;//桌子唯一
	int cid;//创建者ID
	int clubid;//俱乐部ID
	int pi;//底皮
	int gameduration;//游戏时长
	int win;//输赢
	int dairu;//带入
	string name;//昵称 俱乐部牌局是俱乐部昵称 否则是用户昵称
	string head;//头像 俱乐部牌局是俱乐部头像 否则是用户头像
	string tablename;//牌局名称
	string gameendtime;//游戏结束时间 （时间戳）
	string gameenddate;//游戏结束日期 （7月1日）
};

//牌局记录 牌局详情 结构
struct XYgameMinlogStruct
{
	int userid;//玩家ID
	string username;//玩家昵称
	string userhead;//玩家头像
	int win;//输赢
	int dairu;//带入
	int fenpei;//分配值
	string fenpeiclubName;//分配的俱乐部名称
};

struct awards
{
	int uid;//玩家ID
	int tableid;//桌子ID
	int shou;//第几手
	int gamechang;//什么场 0大厅 1好友 2俱乐部
	int roomtype;//3丁二皇  6马鼓旋
	string neirong;
	string time;//时间
};
//聊天记录
struct ChatStringReq ->
{

}
struct ChatStringRsp <-
{
	vector<string> strs;
}
//房主踢人
struct BankerKickReq ->
{
	int uid;
}
//发道具 聊天
struct ChatReq ->
{
	int type;//0 文字聊天 1表情 2道具
	string content;
	int acceptUid;//接受uid
}
struct ChatRsp <-
{
	int type;//0 文字聊天 1表情 2道具
	string content;
	int uid;
	int acceptUid;//接受uid
}
//游戏中玩家信息
struct GamePlayerInfoReq ->
{
	int uid;
}
struct GamePlayerInfoRsp <-
{
	int uid;
	int zongjuCount;
	int zongshouCount;
	int zongshouWinCount;
	int zupaiCount;
	int zupaiWinCount;
}
//游戏延时
struct GameDelayedReq ->
{
}
struct GameDelayedRsp <-
{
	int isok;//0 成功 1失败 2次数不足
}


//玩家胜率数据
struct MyGameWinRateDataReq ->
{

}
struct MyGameWinRateDataRsp <-
{
	int zongjucount;//总局数
    int zongshoucount;//总手数
    int zongshouwincount;//获胜手数
    int zupaicount;//组牌（翻牌）数
    int zupaiwincount;//组牌（翻牌）赢次数
    int zongwinjucount;//总赢次数
    int zonglosejucount;//总数次数
}
//通知要搓牌
struct NoticeCuopaiRsp <-
{
	vector<int> uids;
}
//操作搓牌开关
struct PlayerOperateCuopaiReq ->
{
	int type;// 0关 1开
}
struct PlayerOperateCuopaiRsp <-
{
	int type;// 0关 1开
	int isok;
	int uid;
}
//搓牌结束
struct NoticeCuopaiEndRsp <-
{
}
//玩家搓牌
struct PlayerCuopaiNoticeReq ->
{
	
}
struct PlayerCuopaiNoticeRsp <-
{
	int uid;
	int isok;
}
//房主操作 2 、 3 （俱乐部权限踢人）
struct RoomMasterOperateReq ->
{
	int type;//0 解散房间 1 开关聊天 2踢出房间 3踢人站起
	int tempid;// [type:1  0关  1开] [type:2  对应用户id]
}
struct RoomMasterOperateRsp <-
{
	int type;//0 解散房间 1 开关聊天 2踢出房间 3踢人站起
	int tempid;
	int isok;
}

//玩家桌子外出现积分变动
struct TabOutintegralChangeRsp <-
{
	int type;//1 积分 2俱乐部信誉分
	int val;

}
//经纬度
struct SetLongitudeLatitudeReq ->
{
	string longitude;//经度
	string latitude;//纬度
}
//通知账号异地登录
struct NoticeDifferentPlacesLoginRsp <-
{
}